package estate;

import java.util.HashMap;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author Wlodek
 */
public class DekoratorBudynkowy extends Dekorator {

    private int rok_budowy;
    private String stan_prawny;
    private int liczba_pieter;
    private int liczba_pokoi;
    private int stan_budynu;
    private int typ_zabudowy;
    private String dzielnica;
    private String ulica;
    private int kod_pocztowy;
    private int numer_budynku;

    public int getRokBudowy() {
        return rok_budowy;
    }

    public String getStanPrawny() {
        return stan_prawny;
    }

    public int getLiczbaPieter() {
        return liczba_pieter;
    }

    public int getliczbaPokoi() {
        return liczba_pokoi;
    }

    public int getStanBudynu() {
        return stan_budynu;
    }

    public int getTypZabudowy() {
        return typ_zabudowy;
    }

    public String getDzielnica() {
        return dzielnica;
    }

    public String getUlica() {
        return ulica;
    }

    public int getKodPocztowy() {
        return kod_pocztowy;
    }

    public int getNumerBudynku() {
        return numer_budynku;
    }

    @Override
    public void dekoruj(HashMap<String, Object> hm) {
         System.out.println("dDB");
        this.rok_budowy = (Integer) hm.get("rok_budowy");
        this.stan_prawny = (String) hm.get("stan_prawny");
        this.liczba_pieter = (Integer) hm.get("liczba_pieter");
        this.liczba_pokoi = (Integer) hm.get("liczba_pokoi");
        this.stan_budynu = (Integer) hm.get("stan_budynu");
        this.typ_zabudowy = (Integer) hm.get("typ_zabudowy");
        this.dzielnica = (String) hm.get("dzielnica");
        this.ulica = (String) hm.get("ulica");
        this.kod_pocztowy = (Integer) hm.get("kod_pocztowy");
        this.numer_budynku = (Integer) hm.get("numer_budynku");

        this.element.dekoruj(hm);
    }

    public DekoratorBudynkowy(Estate e) {
        super(e);
    }

    @Override
    public boolean equals(Object e) {
         System.out.println("eDB");
        DekoratorBudynkowy pe = (DekoratorBudynkowy) e;
        if (this.rok_budowy == pe.getRokBudowy() &&
                this.stan_prawny.equals(pe.getStanPrawny()) &&
                this.liczba_pieter == pe.getLiczbaPieter() &&
                this.liczba_pokoi == pe.liczba_pokoi &&
                this.stan_budynu == pe.stan_budynu &&
                this.typ_zabudowy == pe.typ_zabudowy &&
                this.dzielnica.equals(pe.dzielnica) &&
                this.ulica.equals(pe.ulica) &&
                this.kod_pocztowy == pe.kod_pocztowy &&
                this.numer_budynku == pe.numer_budynku &&
                element.equals(pe.element)) {
            return true;
        } else {
            return false;
        }
    }

    @Override
    public int hashCode() {
        int hash = 5;
        hash = 53 * hash + this.rok_budowy;
        hash = 53 * hash + (this.stan_prawny != null ? this.stan_prawny.hashCode() : 0);
        hash = 53 * hash + this.liczba_pieter;
        hash = 53 * hash + this.liczba_pokoi;
        hash = 53 * hash + this.stan_budynu;
        hash = 53 * hash + this.typ_zabudowy;
        hash = 53 * hash + (this.dzielnica != null ? this.dzielnica.hashCode() : 0);
        hash = 53 * hash + (this.ulica != null ? this.ulica.hashCode() : 0);
        hash = 53 * hash + this.kod_pocztowy;
        hash = 53 * hash + this.numer_budynku;
        return hash;
    }
   @Override
    public int compareTo(Estate arg1) {
        System.out.println("cDB");
        DekoratorBudynkowy arg = (DekoratorBudynkowy)arg1;
        int wynik;
        wynik = element.compareTo(arg.element); //poprawa, bylo:  wynik = element.compareTo(arg1); 
        if (wynik != 0) {
            if (getRokBudowy() != arg.getRokBudowy()) { //po roku budowy
                return arg.getRokBudowy() - getRokBudowy();
            }
        }
        return 0;
    }
   @Override
    public String toString() {
        String pom = element.toString();
        pom+= "1: " + rok_budowy + " 2: " + stan_prawny + " 3: " + liczba_pieter +
                " 4: " + liczba_pokoi + " 5: " + stan_budynu + " 6: " + typ_zabudowy + " 7: " + dzielnica + " 8: " + ulica + " 9: " + kod_pocztowy + " 10: " + numer_budynku;
        return pom;
    }
   @Override
    public void setUser(User user)
    {
        element.setUser(user);
    }
}
